For a variety of reasons, software developers distribute application program updates, e.g., patches, to users. For example, a patch can be utilized to update a software program, allowing it greater functionality, usability, and performance. In another example, a patch can be applied to correct technical problems or programming bugs that exist in the underlying software version.
Generally, a patch is not a stand-alone program and may require a set of prerequisite application programs, e.g., prerequisite patches, to be pre-applied in the correct order prior to the application of the patch. If not all prerequisite application programs, e.g., prerequisite patches, are pre-applied properly in the correct order, the patch may fail to function correctly.
Usually, one or more of the prerequisite application programs, e.g., prerequisite patches, needed for the patch requires additional prerequisite application programs as well. Consequently, the total number of required prerequisite application programs, e.g., prerequisite patches, is often quite large. Traditionally, a user that desires to apply a patch has to manually traverse the possible prerequisites in order to ascertain which application programs are needed. Also, the user has to manually remove duplicate prerequisites at different levels of the prerequisite set. Further, the user has to manually sort the prerequisite application programs, e.g., prerequisite patches, into the correct application order and then download and apply them.
Frequently, manually traversing the prerequisites, manually removing duplicate prerequisite application programs, e.g., prerequisite patches, and manually sorting the prerequisite application programs, e.g., prerequisite patches, into the correct application order can lead to several difficulties. For example, manually traversing the tens of thousands of prerequisite application programs, e.g., prerequisite patches, in order to ascertain which files are needed can be extremely time consuming, tedious, and inefficient. Similarly, manually removing duplicate prerequisites at different levels of prerequisite set is both inefficient and susceptible to human error. Correspondingly, manually sorting the large number of prerequisite application programs, prerequisite patches, into the correct application order is uneconomical and prone to mistakes.